﻿// <copyright file="IImage.cs" company="Signal Processing Lab, Wuhan University">
// Copyright (c) 2009-2010 All Right Reserved
// </copyright>
// <author>Xinping Deng</author>
// <email>dentoby@gmail.com</email>
// <date>2010-4</date>
// <summary>This is part of Image.NET project.</summary>

namespace SPLWHU.Core.Raster
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// The interface of raster image.
    /// </summary>
    public interface IImage
    {
        /// <summary>
        /// Gets the width of the image.
        /// </summary>
        /// <value>The width of the image.</value>
        int ImageWidth { get; }

        /// <summary>
        /// Gets the height of the image.
        /// </summary>
        /// <value>The height of the image.</value>
        int ImageHeight { get; }

        /// <summary>
        /// Gets the band count of the image.
        /// </summary>
        /// <value>The band count of the image.</value>
        int BandCount { get; }

        /// <summary>
        /// Gets the image data.
        /// </summary>
        /// <value>The image data.</value>
        object ImageData { get; }

        /// <summary>
        /// Gets the type of the data.
        /// </summary>
        /// <value>The type of the data.</value>
        Type DataType { get; }

        /// <summary>
        /// Gets or sets the image header.
        /// </summary>
        /// <value>The image header.</value>
        TagCollection Attributes { get; set; }

        /// <summary>
        /// Applies the filter on this image.
        /// </summary>
        /// <param name="filter">The filter.</param>
        void ApplyFilter(IFilter filter);
    }
}
